home *** CD-ROM | disk | FTP | other *** search
/ ADA Programming Guide / ADA Programming Guide.iso / adasmall / 4taskmon.ada next >
Text File  |  1996-01-30  |  3KB  |  126 lines

  1. with SMALL_SP; use SMALL_SP;
  2. procedure FOURTASK is
  3.  
  4.   task CYCLIC_1 is
  5.     entry START;
  6.   end CYCLIC_1;
  7.  
  8.   task CYCLIC_2 is
  9.     entry START;
  10.   end CYCLIC_2;
  11.  
  12.   task CYCLIC_3 is
  13.     entry START;
  14.   end CYCLIC_3;
  15.  
  16.   task CYCLIC_4 is
  17.     entry START;
  18.   end CYCLIC_4;
  19.  
  20.   task SCREEN is
  21.     entry SEIZE;
  22.     entry RELEASE;
  23.   end SCREEN;
  24.  
  25.   task body SCREEN is
  26.     begin
  27.       loop
  28.         select
  29.           accept SEIZE;
  30.           accept RELEASE;
  31.         or
  32.           terminate;
  33.         end select;
  34.       end loop;
  35.     end SCREEN;
  36.  
  37.   task body CYCLIC_1 is
  38.     T : FLOAT;
  39.   begin
  40.     accept START;
  41.     SCREEN.SEIZE;
  42.     CURSORAT(1,1); PUT("CYCLIC_1 RUNS EVERY 3.0 SECONDS");
  43.     SCREEN.RELEASE;
  44.     T := CLOCK + 3.0;
  45.     for HOW_MANY in 1..20
  46.     loop
  47.       SCREEN.SEIZE;
  48.       CURSORAT(2,1); PUT("       ");
  49.       SCREEN.RELEASE;
  50.       delay T - CLOCK;
  51.       T := CLOCK + 3.0;
  52.       SCREEN.SEIZE;
  53.       CURSORAT(2,1); PUT("RUNNING"); PUT(HOW_MANY);
  54.       SCREEN.RELEASE;
  55.     end loop;
  56.   end CYCLIC_1;
  57.  
  58.   task body CYCLIC_2 is
  59.     T : FLOAT;
  60.   begin
  61.     accept START;
  62.     SCREEN.SEIZE;
  63.     CURSORAT(3,1); PUT("CYCLIC_2 RUNS EVERY 5.0 SECONDS");
  64.     SCREEN.RELEASE;
  65.     T := CLOCK + 5.0;
  66.     for HOW_MANY in 1..10
  67.     loop
  68.       SCREEN.SEIZE;
  69.       CURSORAT(4,1); PUT("       ");
  70.       SCREEN.RELEASE;
  71.       delay T - CLOCK;
  72.       T := CLOCK + 5.0;
  73.       SCREEN.RELEASE;
  74.       CURSORAT(4,1); PUT("RUNNING"); PUT(HOW_MANY);
  75.       SCREEN.RELEASE;
  76.     end loop;
  77.   end CYCLIC_2;
  78.  
  79.   task body CYCLIC_3 is
  80.     T : FLOAT;
  81.   begin
  82.     accept START;
  83.     SCREEN.SEIZE;
  84.     CURSORAT(5,1); PUT("CYCLIC_3 RUNS EVERY 7.0 SECONDS");
  85.     SCREEN.RELEASE;
  86.     T := CLOCK + 7.0;
  87.     for HOW_MANY in 1..10
  88.     loop
  89.       SCREEN.SEIZE;
  90.       CURSORAT(6,1); PUT("       ");
  91.       SCREEN.RELEASE;
  92.       delay T - CLOCK;
  93.       T := CLOCK + 7.0;
  94.       SCREEN.SEIZE;
  95.       CURSORAT(6,1); PUT("RUNNING"); PUT(HOW_MANY);
  96.       SCREEN.RELEASE;
  97.     end loop;
  98.   end CYCLIC_3;
  99.  
  100.   task body CYCLIC_4 is
  101.     T : FLOAT;
  102.   begin
  103.     accept START;
  104.     SCREEN.SEIZE;
  105.     CURSORAT(7,1); PUT("CYCLIC_4 RUNS EVERY 9.0 SECONDS");
  106.     SCREEN.RELEASE;
  107.     T := CLOCK + 9.0;
  108.     for HOW_MANY in 1..10 loop
  109.       SCREEN.SEIZE;
  110.       CURSORAT(8,1); PUT("       ");
  111.       SCREEN.RELEASE;
  112.       delay T - CLOCK;
  113.       T := CLOCK + 9.0;
  114.       SCREEN.SEIZE;
  115.       CURSORAT(8,1); PUT("RUNNING"); PUT(HOW_MANY);
  116.       SCREEN.RELEASE;
  117.     end loop;
  118.   end CYCLIC_4;
  119.  
  120. begin
  121.   CYCLIC_1.START;
  122.   CYCLIC_2.START;
  123.   CYCLIC_3.START;
  124.   CYCLIC_4.START;
  125. end FOURTASK;
  126.